package wc;
import java.awt.Container;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;

public class ChooseFile implements ActionListener {
	JFrame frame = new JFrame("WordCount");
	JTabbedPane tabPane = new JTabbedPane();// 选项卡布局
	Container con = new Container();// 布局1
	JLabel label = new JLabel("选择文件");
	JTextField text = new JTextField();
	JButton button = new JButton("选择文件");
	JFileChooser jfc = new JFileChooser();// 文件选择

	ChooseFile() {
		jfc.setCurrentDirectory(new File("d:\\"));// 文件选择器的初始目录定为d盘
		// 下面两行是取得屏幕的高度和宽度
		double lx = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
		double ly = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
		frame.setLocation(new Point((int) (lx / 2) - 150, (int) (ly / 2) - 150));// 设定窗口出现位置
		frame.setSize(500, 300);// 设定窗口大小
		frame.setContentPane(tabPane);// 设置布局
		// 下面设定标签等的出现位置和高宽
		label.setBounds(40, 40, 150, 40);
		text.setBounds(100, 40, 150, 40);
		button.setBounds(280, 40, 150, 40);
		button.addActionListener(this);// 添加事件处理
		con.add(label);
		con.add(text);
		con.add(button);
		con.add(jfc);
		tabPane.add("文件选择", con);// 添加布局
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);// 窗口可见
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 使能关闭窗口，结束程序
	}

	@Override
	public void actionPerformed(ActionEvent e) {// 事件处理
		if (e.getSource().equals(button)) {
			// 初始化文件选择框
			JFileChooser fDialog = new JFileChooser();
			// 设置文件选择框的标题
			fDialog.setDialogTitle("请选择文件");
			// 弹出选择框
			int returnVal = fDialog.showOpenDialog(null);
			// 如果是选择了文件
			if (JFileChooser.APPROVE_OPTION == returnVal) {
				// 打印出文件的路径，你可以修改位 把路径值 写到 textField 中
				text.setText(fDialog.getSelectedFile().getPath());
			
			}
			ChooseFile cf = new ChooseFile();
			try {
				cf.getFileContentAndPrint(fDialog.getSelectedFile().getPath());
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}

		}

	}
	public void getFileContentAndPrint(String path) throws IOException {
		int charNum = 0;
		int wordNum = 0;
		int lineNum = 0;
		File file = new File(path);
		if (file.exists() == false) {
			file.createNewFile();
		}
		InputStreamReader isr = new InputStreamReader(new FileInputStream(path));
		BufferedReader br = new BufferedReader(isr);
		String str = null;
		while ((str = br.readLine()) != null) {
			charNum += str.length();
			wordNum += str.split(" ").length;
			lineNum++;
		}
		System.out.println(file.getName() + ":");
		System.out.println("字符数：" + charNum);
		System.out.println("单词数：" + wordNum);
		System.out.println("行数：" + lineNum);
		br.close();
	}
}
